﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Library;
using System.IO;
using System.Collections;
using System.Data.SqlClient;
namespace QuanLyThi
{
    public partial class FrmCauHinhMonThi : Form
    {
        public static string mConnect = FrmMain.mConnect;
        private string msql = "";
        public DGC_Library mLibrary = new DGC_Library(mConnect);


        public FrmCauHinhMonThi()
        {
            InitializeComponent();
            LoadMon();
            LoadMonDaCauHinh();
        }
        private void LoadMon()
        {
            msql = "Select * from TB_Mondaotao";
            cmon.DataSource = mLibrary.GetDataTable(msql, "a");
            cmon.ValueMember = "ms_mondaotao";
            cmon.DisplayMember = "mondaotao";
        }
        private void LoadMonDaCauHinh()
        {
            msql = "Select b.* from tb_masodethi a" +
                   " inner join tb_Mondaotao b" +
                   " on a.ms_mondaotao=b.Ms_Mondaotao";         
            DataTable dtable = mLibrary.GetDataTable(msql, "a");
            if (dtable.Rows.Count > 0)
            {
                list.AutoGenerateColumns = false;
                list.DataSource = dtable;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
        }
        private void LoadNoidung(RichTextBox rt, byte[] noidung)
        {
            Stream theFile = new MemoryStream(noidung);
            rt.LoadFile(theFile, RichTextBoxStreamType.RichText);
        }

        private void list_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                msql = "Select * from tb_masodethi Where MS_Mondaotao=" + list.CurrentRow.Cells["ms_mondaotao"].Value.ToString();
                DataTable dt = mLibrary.GetDataTable(msql, "a");
                if (dt.Rows.Count > 0)
                {
                    LoadNoidung(ghichutruoc.RichTextBox, (byte[])dt.Rows[0]["ghichutruoc"]);
                    LoadNoidung(ghichusau.RichTextBox, (byte[])dt.Rows[0]["ghichusau"]);
                    cmon.SelectedValue = list.CurrentRow.Cells["ms_mondaotao"].Value.ToString();
                    txtthoigian.Text = dt.Rows[0]["thoigianlambai"].ToString();
                    txtsocau.Text = dt.Rows[0]["soluongcauhoi"].ToString();
                    txtdiemdat.Text = dt.Rows[0]["diemdat"].ToString();
                    txttoida.Text = dt.Rows[0]["toida"].ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void butsua_Click(object sender, EventArgs e)
        {
            try
            {
                 DialogResult dialog = MessageBox.Show("Bạn có muốn điều chỉnh cấu hình môn này không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                 if (dialog == DialogResult.Yes)
                 {
                     UpdateDatabase();
                     MessageBox.Show("Điều chỉnh thông tin cấu hình thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void butthoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public static byte[] StrToByteArray(string str)
        {
            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            return encoding.GetBytes(str);
        }
        private void UpdateDatabase()
        {
            string strQuery = "exec Sua_Masodethi @MS_Mondaotao, "+
                              "@Thoigianlambai, @Soluongcauhoi, " +
                              "@Diemdat, @Toida,@Ghichutruoc,@Ghichusau";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@MS_Mondaotao", SqlDbType.Int).Value = list.CurrentRow.Cells["ms_mondaotao"].Value.ToString();
            cmd.Parameters.Add("@Thoigianlambai", SqlDbType.Int).Value = txtthoigian.Text;
            cmd.Parameters.Add("@Soluongcauhoi", SqlDbType.Int).Value = txtsocau.Text;
            cmd.Parameters.Add("@Diemdat", SqlDbType.Int).Value = txtdiemdat.Text;
            cmd.Parameters.Add("@Toida", SqlDbType.Int).Value = txttoida.Text;
            cmd.Parameters.Add("@Ghichutruoc", SqlDbType.Image).Value = StrToByteArray(ghichutruoc.RichTextBox.Rtf);
            cmd.Parameters.Add("@Ghichusau", SqlDbType.Image).Value = StrToByteArray(ghichusau.RichTextBox.Rtf);
            InsertUpdateData(cmd); 
        }
        private void InsertDatabase()
        {
            string strQuery = "exec Luu_Masodethi @MS_Mondaotao, " +
                              "@Thoigianlambai, @Soluongcauhoi, " +
                              "@Diemdat, @Toida,@Ghichutruoc,@Ghichusau";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@MS_Mondaotao", SqlDbType.Int).Value = cmon.SelectedValue.ToString();
            cmd.Parameters.Add("@Thoigianlambai", SqlDbType.Int).Value = txtthoigian.Text;
            cmd.Parameters.Add("@Soluongcauhoi", SqlDbType.Int).Value = txtsocau.Text;
            cmd.Parameters.Add("@Diemdat", SqlDbType.Int).Value = txtdiemdat.Text;
            cmd.Parameters.Add("@Toida", SqlDbType.Int).Value = txttoida.Text;
            cmd.Parameters.Add("@Ghichutruoc", SqlDbType.Image).Value = StrToByteArray(ghichutruoc.RichTextBox.Rtf);
            cmd.Parameters.Add("@Ghichusau", SqlDbType.Image).Value = StrToByteArray(ghichusau.RichTextBox.Rtf);
            InsertUpdateData(cmd);
        }
        private Boolean InsertUpdateData(SqlCommand cmd)
        {
            SqlConnection con = new SqlConnection(mConnect);
            cmd.CommandType = CommandType.Text;
            cmd.Connection = con;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception)
            {              
                return false;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }

        private void butxoa_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult dialog = MessageBox.Show("Bạn có muốn xóa thông tin cấu hình môn thi này không", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialog == DialogResult.Yes)
                {
                    msql = "Delete from tb_masodethi Where MS_Mondaotao=" + list.CurrentRow.Cells["ms_mondaotao"].Value.ToString();
                    mLibrary.RunProc(msql);
                    MessageBox.Show("Xóa thông tin cấu hình thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadMonDaCauHinh();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Xóa thông tin không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void butthem_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult dialog = MessageBox.Show("Bạn có muốn thêm cấu hình môn này không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialog == DialogResult.Yes)
                {
                    InsertDatabase();
                    MessageBox.Show("Thêm thông tin cấu hình thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadMonDaCauHinh();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        } 






    }
}
